package com.zzl.bonds.ticket.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zzl.bonds.ticket.dto.CashTicketPage;
import com.zzl.bonds.ticket.dto.SurveyInfo;
import com.zzl.bonds.ticket.dto.myticket.MyTicketFinancePage;
import com.zzl.bonds.ticket.dto.myticket.MyTicketInvalidPage;
import com.zzl.bonds.ticket.dto.myticket.MyTicketPage;
import com.zzl.bonds.ticket.entity.TicketEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 我的票据
 * 
 * @author sunpp
 * @email 1171813232@qq.com
 * @date 2022-02-16 11:14:07
 */
@Mapper
@SuppressWarnings("javadoc")
public interface TicketDao extends BaseMapper<TicketEntity> {

    /**
    * 查询包含逻辑删除的数据集合
    * @param ticketEntity 我的票据对象
    * @return 包含逻辑删除的数据集合
    */
    List<TicketEntity> listIncludeDel(TicketEntity ticketEntity);

    /**
     * 分页查询 我持有的开立票据
     *
     * @param page   分页返回值
     * @param params 分页参数
     * @return
     */
    IPage<MyTicketPage> queryAllPage(IPage<MyTicketPage> page, @Param("params") Map<String, Object> params);


    /**
     * 分页查询 我持有的开立票据
     *
     * @param page   分页返回值
     * @param params 分页参数
     * @return
     */
    IPage<MyTicketPage> queryHoldPage(IPage<MyTicketPage> page, @Param("params") Map<String, Object> params);

    /**
     * 分页查询 转让中票据
     *
     * @param page   分页返回值
     * @param params 分页参数
     * @return
     */
    IPage<MyTicketPage> queryTransferIngPage(IPage<MyTicketPage> page, @Param("params") Map<String, Object> params);


    /**
     * 分页查询 融资中中票据
     *
     * @param page   分页返回值
     * @param params 分页参数
     * @return
     */
    IPage<MyTicketFinancePage> queryFinanceIngPage(IPage<MyTicketFinancePage> page, @Param("params") Map<String, Object> params);


    /**
     * 分页查询 失效的
     *
     * @param page   分页返回值
     * @param params 分页参数
     * @return
     */
    IPage<MyTicketInvalidPage> queryInvalidPage(IPage<MyTicketInvalidPage> page, @Param("params") Map<String, Object> params);

    /**
     * 分页查询兑付
     * @param page
     * @param params
     * @return
     */
    IPage<CashTicketPage> cashingPage(IPage<CashTicketPage> page, Map<String, Object> params);

    List<CashTicketPage> getCashList( @Param("ticketOpenId")String ticketOpenId);

    List<CashTicketPage> getPlatformCashList(@Param("ticketOpenId")String ticketOpenId,@Param("cashStatus")List<Integer> cashStatus);

    List<CashTicketPage> getPlatformCashListForStatus(@Param("ticketOpenId") String ticketOpenId,@Param("ticketStatus") List<Integer> ticketStatus);

    List<CashTicketPage> getByIds(@Param("ticketIds") List<String> ticketIds);


    SurveyInfo survey(String enterpriseId);

}
